package disenioPantallas.elementos;


import gestores.GestorUsuario;

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.Stack;

import javax.swing.JSeparator;
import javax.swing.border.EmptyBorder;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import java.awt.Color;

import disenioPantallas.ActividadesCampo.FichaCampo;
import disenioPantallas.AltaAnimal.AltaAnimal;
import disenioPantallas.datosDelSistema.DatosSistema;
import disenioPantallas.listarAnimales.ListarAnimales;
import java.awt.Component;

public class FrameAutenticado extends JFrame implements ActionListener {


	private static final long serialVersionUID = 1L;
	private Stack<JPanel> listaPaneles;
	
	
	
	private JPanel contentPane;
	private ImageIcon altaAnimal,bajaAnimal,datosAnimal,modificacion,busqueda;
	public JButton btnDarAltaAnimal, btnDarDeBaja, btnModificarDatos, btnOperacionDeModificacion, btnOperacionBusqueda;
	
	private JSplitPane splitPane;
	private JPanel pnlCentral;
	private JMenuItem mntmDarDeAlta;
	private JMenuItem mntmRealizarUnaBusqueda;
	private JMenuItem mntmActividadesEnCampos;
	private JMenuItem mntmModificarDatosDel;
	private JSeparator separator;
	private JSeparator separator_1;
	private Component horizontalGlue;
	private JLabel lblUsuario;
	

	

	public FrameAutenticado() {
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setExtendedState(MAXIMIZED_BOTH);
		setTitle("Registro de Entidades Sacrificables");
		setMinimumSize(new Dimension(800,400));
		setName("Registro de Entidades Sacrificables");
		listaPaneles= new Stack<JPanel>();
		setIconImage (new ImageIcon(getClass().getResource("/disenioPantallas/toro_negro.jpg")).getImage());


		try
		{
			JFrame.setDefaultLookAndFeelDecorated(true);
			JDialog.setDefaultLookAndFeelDecorated(true);
			UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
		}
		catch (Exception e)
		{
		 	e.printStackTrace();
		}
	

		
		altaAnimal=new ImageIcon(getClass().getResource("/imagenes/DarAlta.jpg")); 
		bajaAnimal=new ImageIcon(getClass().getResource("/imagenes/DarBaja.jpg"));
		datosAnimal=new ImageIcon(getClass().getResource("/imagenes/ModificarDatos.jpg"));
		modificacion=new ImageIcon(getClass().getResource("/imagenes/Modificacion.jpg"));
		busqueda=new ImageIcon(getClass().getResource("/imagenes/Busqueda.jpg"));
		
		

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnArchivo = new JMenu("Archivo");
		menuBar.add(mnArchivo);
		
		JMenuItem mntmEncenderBD = new JMenuItem("Encender Base de Datos");
		mnArchivo.add(mntmEncenderBD);
		
		separator = new JSeparator();
		mnArchivo.add(separator);
		
		mntmDarDeAlta = new JMenuItem("Dar de Alta Animal");
		mnArchivo.add(mntmDarDeAlta);
		mntmDarDeAlta.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				AltaAnimal nuevo=new AltaAnimal();
				agregarCU(nuevo);
				((AltaAnimal) nuevo).cargarCampos();
				
				
			}
		});

		
		mntmRealizarUnaBusqueda = new JMenuItem("Realizar una Busqueda");
		mnArchivo.add(mntmRealizarUnaBusqueda);
		mntmRealizarUnaBusqueda.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				ListarAnimales nuevo=new ListarAnimales();
				agregarCU(nuevo);
				((ListarAnimales) nuevo).cargarCampos();
				
				
			}
		});

		
		mntmActividadesEnCampos = new JMenuItem("Actividades en Campos");
		mnArchivo.add(mntmActividadesEnCampos);
		mntmActividadesEnCampos.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				FichaCampo nuevo=new FichaCampo();
				agregarCU(nuevo);
				((FichaCampo) nuevo).cargarCampos();
			}
		});

		
		mntmModificarDatosDel = new JMenuItem("Modificar Datos del Sistema");
		mnArchivo.add(mntmModificarDatosDel);
		mntmModificarDatosDel.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				DatosSistema nuevo=new DatosSistema();
				agregarCU(nuevo);
				((DatosSistema) nuevo).cargarCampos();
			}
		});

		
		separator_1 = new JSeparator();
		mnArchivo.add(separator_1);
		
		
		JMenuItem mntmSalir = new JMenuItem("Salir");
		mnArchivo.add(mntmSalir);
		
		horizontalGlue = Box.createHorizontalGlue();
		menuBar.add(horizontalGlue);
		
		lblUsuario = new JLabel(GestorUsuario.getGestorUsuario().getUsuarioActual().getNombreUsuario());
		menuBar.add(lblUsuario);
		
		
		contentPane = new JPanel();
		contentPane.setBackground(new Color(0, 153, 255));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));
		
		JPanel pnlOpciones = new JPanel();
		//contentPane.add(pnlOpciones, BorderLayout.WEST);
		pnlOpciones.setLayout(new BoxLayout(pnlOpciones, BoxLayout.Y_AXIS));
		pnlOpciones.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); 	
		
		btnDarAltaAnimal = new JButton("",altaAnimal);
		btnDarAltaAnimal.setToolTipText("Dar de alta un animal");
		btnDarAltaAnimal.setSize(new Dimension(100,100));
		pnlOpciones.add(btnDarAltaAnimal);
		btnDarAltaAnimal.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				AltaAnimal nuevo=new AltaAnimal();
				agregarCU(nuevo);
				((AltaAnimal) nuevo).cargarCampos();
				
				
			}
		});

		btnOperacionBusqueda = new JButton("",busqueda);
		btnOperacionBusqueda.setToolTipText("Realizar una b\u00FAsqueda avanzada");
		btnOperacionBusqueda.setSize(new Dimension(100,100));
		pnlOpciones.add(btnOperacionBusqueda);
		btnOperacionBusqueda.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				ListarAnimales nuevo=new ListarAnimales();
				agregarCU(nuevo);
				((ListarAnimales) nuevo).cargarCampos();
				
			}
		});

		btnModificarDatos = new JButton("",datosAnimal);
		btnModificarDatos.setToolTipText("Actividades en el Campo");
		btnModificarDatos.setSize(new Dimension(100,100));
		pnlOpciones.add(btnModificarDatos);
		btnModificarDatos.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				FichaCampo nuevo=new FichaCampo();
				agregarCU(nuevo);
				((FichaCampo) nuevo).cargarCampos();				
			}
		});
		
		btnOperacionDeModificacion = new JButton("",modificacion);
		btnOperacionDeModificacion.setToolTipText("Modificar Datos del Sistema");
		btnOperacionDeModificacion.setSize(new Dimension(100,100));
		pnlOpciones.add(btnOperacionDeModificacion);
		btnOperacionDeModificacion.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				DatosSistema nuevo=new DatosSistema();
				agregarCU(nuevo);
				((DatosSistema) nuevo).cargarCampos();	
			}});
		
		btnDarDeBaja = new JButton("",bajaAnimal);
		btnDarDeBaja.setToolTipText("Salir");
		btnDarDeBaja.setSize(new Dimension(100,100));
		pnlOpciones.add(btnDarDeBaja);
		btnDarDeBaja.addActionListener(null);
	


	
		pnlCentral = new JPanel();
		pnlCentral.setAutoscrolls(true);
		agregarCU(new PaneldeFondo());
		
		pnlCentral.setOpaque(false);
		pnlCentral.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
		pnlCentral.setMinimumSize(new Dimension(800, 600));
		pnlCentral.setBorder(new BevelBorder(BevelBorder.RAISED, null, null, null, null));

				
		
		pnlOpciones.addMouseMotionListener(new mousePnlCentral());
		pnlCentral.addMouseMotionListener(new mousePnlFinal());
		
		splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pnlOpciones,  pnlCentral);
		pnlCentral.setLayout(new BoxLayout(pnlCentral, BoxLayout.Y_AXIS));
		contentPane.add(splitPane, BorderLayout.CENTER);
		splitPane.setDividerLocation(140);





		}


	@Override
	public void actionPerformed(ActionEvent arg0) {
		Object evento= arg0.getSource();
		
/*		if(evento==mntmCargarVacuna){ CrearFrame(new CargarVacuna(), ListaFrames); }
//		if(evento==btnOperacionBusqueda){ CrearFrame(new FichaAnimal(), ListaFrames);	}
		if(evento==mntmContarAnimales){CrearFrame( new ContarAnimales(), ListaFrames);	}
		if(evento==btnDarAltaAnimal || evento==mntmDarAltaAnimal){ 	CrearFrame( new DarDeAlta(), ListaFrames);	}
		
		
		//if(evento==mntmModificarDatosDe || evento==btnModificarDatos){ CrearFrame(new ModificarAnimal(), ListaFrames);}
		if(evento==mntmVacunar){ CrearFrame(new OpVacunar(), ListaFrames);	}
		//if(evento==btnDarDeBaja || evento==mntmDarBajaAnimal) {  CrearFrame( new EliminarAnimal(), ListaFrames);}
		if(evento==mntmCastrar){ CrearFrame( new OpCastrar(), ListaFrames);}
		if(evento==mntmPesaje){ CrearFrame( new OpPesaje(), ListaFrames);	}
		if(evento==mntmCargarLugar){ CrearFrame( new CargarLugar(), ListaFrames); }
		if(evento==mntmCargarRaza){ CrearFrame(new CargarRaza(), ListaFrames);}
		if(evento==mntmCargarCategoria){ CrearFrame(new CargarCategoria(), ListaFrames);}
		if(evento==mntmListarAnimales){ CrearFrame( new ListarAnimales(), ListaFrames);	}
		if(evento==mntmTraslado){CrearFrame(new OpTrasladar(), ListaFrames);}
		if(evento==mntmFecha){CrearFrame(new ConfigurarFecha(), ListaFrames);}
*/
	}
	

/*
public void CrearFrame(InternalGanadero ganadero,List<InternalGanadero> frame){
	try {
	internalFrames++;
	frame.add(ganadero);
	frame.get(internalFrames).setLocation((internalFrames%5)*xOffset+10,10+(internalFrames%5)*yOffset);
	pnlEscritorio.add(frame.get(internalFrames));
	frame.get(internalFrames).setVisible(true);
	frame.get(internalFrames).moveToFront();
	frame.get(internalFrames).setSelected(true);
//	if(internalFrames==4) internalFrames=-1;
	} catch (PropertyVetoException e) {
		e.printStackTrace();
	}
	
}					
			*/
public class mousePnlFinal extends MouseMotionAdapter{
	
    public void mouseMoved(MouseEvent e) {
    	splitPane.setDividerLocation(5);
    }
     
    public void mouseDragged(MouseEvent e) {
    	splitPane.setDividerLocation(5);
    }
}
	public class mousePnlCentral extends MouseMotionAdapter{
		
	    public void mouseMoved(MouseEvent e) {
	    	splitPane.setDividerLocation(140);
	    }
	     
	    public void mouseDragged(MouseEvent e) {
	    	splitPane.setDividerLocation(140);
	    }
		
	}
	
	
	
	public void agregarCU(JPanel nuevo){

		pnlCentral.removeAll();
		pnlCentral.add(nuevo);
		listaPaneles.push(nuevo);
		
		
	}
	public void quitarCU(){
			
		listaPaneles.peek().setVisible(false);
		listaPaneles.pop();
		pnlCentral.removeAll();
		JPanel nuevo= new PaneldeFondo();
		if(listaPaneles.size()>0) nuevo=listaPaneles.peek();
		pnlCentral.add(nuevo);
		
		
	}
	
	
	
	
}




	



